The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
A computer network is a set of computing components interconnected by communication links. Each computing component may be a separate computing device, such as, without limitation, a hub, switch, bridge, router, server, gateway, or personal computer, or a component thereof. Each computing component, or “network device,” is considered to be a node within the network. A communication link is a mechanism of connecting at least two nodes such that each node may transmit data to and receive data from the other node. Such data may be transmitted in the form of signals over transmission media such as, without limitation, electrical cables, optical cables, or wireless media.
The structure and transmission of data between nodes is governed by a number of different protocols. There may be multiple layers of protocols, typically beginning with a lowest layer, such as a “physical” layer that governs the transmission and reception of raw bit streams as signals over a transmission medium. Each layer defines a data unit (the protocol data unit, or “PDU”), with multiple data units at one layer combining to form a single data unit in another. Additional examples of layers may include, for instance, a data link layer in which bits defined by a physical layer are combined to form a frame or cell, a network layer in which frames or cells defined by the data link layer are combined to form a packet, and a transport layer in which packets defined by the network layer are combined to form a TCP segment or UDP datagram. The Open Systems Interconnection model of communications describes these and other layers of communications. However, other models defining other ways of layering information may also be used. The Internet protocol suite, or “TCP/IP stack,” is one example of a common group of protocols that may be used together over multiple layers to communicate information. However, techniques described herein may have application to other protocols outside of the TCP/IP stack.
A given node in a network may not necessarily have a link to each other node in the network, particularly in more complex networks. For example, in wired networks, each node may only have a limited number of physical ports into which cables may be plugged in to create links. Certain “terminal” nodes—often servers or end-user devices—may only have one or a handful of ports. Other nodes, such as switches, hubs, or routers, may have a great deal more ports, and typically are used to relay information between the terminal nodes. The arrangement of nodes and links in a network is said to be the topology of the network, and is typically visualized as a network graph or tree.
A given node in the network may communicate with another node in the network by sending data units along one or more different paths through the network that lead to the other node, each path including any number of intermediate nodes. The transmission of data across a computing network typically involves sending units of data, such as packets, cells, or frames, along paths through intermediary networking devices, such as switches or routers, that direct or redirect each data unit towards a corresponding destination.
While a data unit is passing through an intermediary networking device—a period of time that is conceptualized as a “visit” or “hop”—the device may perform any of a variety of actions, or processing steps, with the data unit. The exact set of actions taken will depend on a variety of characteristics of the data unit, such as metadata found in the header of the data unit, and in many cases the context or state of the network device. For example, address information specified by or otherwise associated with the data unit, such as a source address, destination address, or path information, is typically used to determine how to handle a data unit (i.e. what actions to take with respect to the data unit). For instance, an Internet Protocol (“IP”) data packet may include a destination IP address field within the header of the IP data packet, based upon which a network device may determine one or more other networking devices, among a number of possible other networking devices, to forward the IP data packet to.
A network device may include any number of internal hardware and/or software components configured to handle the movement of data between processing components within the device and, eventually, out of the device. It is desirable for these components to quickly determine where to send and/or store data for processing, and to expediently send and/or store that data to the appropriate destination once determined.
In network devices, the handling of data units such as packets is often divided into two parallel paths—a control path and a data path. Portions of the data unit critical to the determination of how to handle the packet—typically the “start-of-packet” (or “SOP”)—is forwarded along the control path for processing by a packet processor. The result of this processing is known as the data unit's “control information,” and is typically used to instruct the network device in forwarding the data unit to another subcomponent of the network device and/or out an external communication interface. Other portions of the data unit—typically referred to as the “payload”—are forwarded along the data path. The control path and the data path eventually converge at a merger unit, which merges the data unit together again along with the control information. Since a data unit may be processed multiple times as it is handled by a network device, a data unit may pass through multiple pairings of control paths and data paths, each corresponding to different stages of processing.
Complex, high-bandwidth network devices such as, without limitation, network switches used in data centers, may include large numbers of subcomponents that handle data units from different sources in parallel. The circuitry of the device may therefore require multiple pairs of control paths and data paths, each coupled to a different source of data units. For instance, for an ingress processing stage, a device may include multiple ingress arbiters, each coupled to a different set of physical and/or logical ports. Each ingress arbiter may be coupled to its own control path, data path, and merger unit. Similarly, for an egress processing stage, a device may include multiple traffic managers configured to receive data units. Each traffic manager may be coupled to its own control path, data path, and merger unit.